Configuration Manager

Use the Configuration Manager page as a single destination to configure everything that exists in MAX Flight Software. This user interface gives you a great deal of flexibility and power to ensure the complexity of the software is not lost, but it comes at the expense of speed and ease of use. To effectively make use of this page for configuration, you need to have an understanding of how the flight software is put together.

Subsystem

The Configuration Manager is where you add, connect, and configure any custom components created via the MAX Development Tool.

Terms

The Configuration Manager generates configuration (*.cfg) files that are separated into three categories: Flight Software (FSW), ODySSy (ODY), and SOLIS (SOL). Each category contains a Table of Contents (_TOC.cfg) file that calls all of the other files. With the exception of the _UnitSpecific.cfg files, SOLIS will write these config files each time a simulation is run.

The *_UnitSpecific.cfg file is intentionally called last so that you can manually make modifications to it that will not be overwritten.

You will see the following terms within these files, so it is important that you have a general understanding of them all.

Component

The fundamental element of MAX Flight Software is the configurable component. A configurable component is an instance of a C++ object that is configured by and accessible to the configuration system, able to accept commands, and produce telemetry. Components exist inside of subsystems.

Subsystem

Subsystem

Subsystems contain components and provide the context for a component's creation and control their priority and rate of execution. Although it is not always necessary for a subsystem to iterate, the execution rate is displayed next to the ones that do.

The execution rate specified in the SOLIS Configuration page determines the ADCS subsystem execution rate, and the CmdTlm subsystem runs at 10x the ADCS rate.

Subsystems also provide logical separation between various functions of the flight software. For now, subsystems are fixed, but you can create and instantiate custom components, as well as instantiate the components that ship with SOLIS.

Configuration

Configuration

All of the subsystems and components exist within a given configuration. SOLIS automatically generates a "safe" base configuration called <SOLIS-Generated>. This particular configuration is accessible via the Configuration dropdown menu at the top-left of the Configuration Manager page. This configuration is directly tied to your setting in the rest of the SOLIS UI and cannot be changed or edited. To add or edit any subsystems or components, you must create a new configuration. You can do this by clicking Copy Copy next to the Configuration dropdown menu.

An STK scenario can have multiple configurations under SOLIS. Each configuration can have a different number of component types. Having multiple configurations enables you to test different combinations of components and parameters.
Factory

A factory is a method for handling the creation of a particular component type. Factories can create multiple instances of a component type, as illustrated.

Factories Diagram

Version

Each component can have multiple versions. The configuration determines what version of each component is selected (active). Within a version, different functions, interface connections, and parameters can be configured.

Working together: configurations, components and versions

SOLIS-Generated Configuration

When SOLIS is first initialized for a satellite, it creates a default configuration. This configuration contains components that are automatically generated by SOLIS. Each of these components has only one version. SOLIS creates the components from the factories of the system.

Multiple Configurations

A satellite in an STK scenario can have one or more configurations under SOLIS. Each configuration can contain any number of components of various types. Below is a simple example of a scenario with a single satellite with Configurations X and Y. The satellite has three factories that create one component each; there is only one instance of each component type. Component A has four versions: the default SOLIS-generated one, and three user-created versions. Components B and C also each have the default SOLIS-generated version, but Component B has two additional user-created versions.

It is important to note that each Component has only one active version in each configuration.
  • In Configuration X, Version i of Component A is active, Version i of Component B is active, and the SOLIS-generated version of Component C is active.
  • In Configuration Y, Version iii of Component A is active, the SOLIS-generated version of Component B is active, and Component C is not included. So, Configuration Y only has two components.

Solis Scenario

You can create more components in either configuration from any of the three factories. However, these new component instances will not have a SOLIS-generated version.

Below is an image from the SOLIS Configuration Manager page, which shows the list of components in the system for a configuration called Config1. The component names in gray font in the list on the left are components that have been generated automatically by SOLIS and therefore have only one version. The ones in black, italicized font are components that have at least one user-created version.

In the image, Component MGR_ODySSy is selected. To the right, you can see in the Component Version dropdown menu that the component has two user-created versions, Version1 and Version2. Selecting <Not Included> from the dropdown menu would exclude the component from the configuration.

Terminology Example

The buttons at the top of the page provide additional details about each configuration set.

Configuration Overview

The Configuration Overview window shows the whole configuration in a single view. This is useful when determining what to set for the MasterID and Priority of a new component.

Configuration Overview

Parameter details

For a comprehensive list of all available parameters for a specified Configuration Set with units and descriptions, click Parameter Details. You can specify whether you want to see Flight Software Parameters, ODySSy Parameters, or Both. You can then save these parameters externally as a report in a CSV file.

Parameter Database UI

Component configuration system

There are three steps to set up the flight software: create, connect, and configure. The create step is for instantiating components and then allocating their memory, establishing a subsystem association, and setting the most basic software-centric configuration. Once you create components, you can connect them. Once connected, you can configure them to define all the inputs of each component.

Create

Create a component by clicking AddAdd button next to the version dropdown menu.

Add Component

Parameter Description
Subsystem Specifies the subsystem that this component belongs to, inherited from the selected subsystem in Configuration Manager.
Factory Type Enter the name of the component type, sometimes also referred to as "Factory Name".
Instance Name Enter the name of the instance of the component. Some components commonly have multiple instances, such as a reaction wheel or a star tracker.
Version Name Each instance of a component can have multiple versions. This is useful for trade studies where you may be evaluating two different star trackers.
Output File The purpose of the Configuration System is to generate configuration files that serve as the mechanism for the input deck for the flight software. This parameter enables you to choose which config file this component's configuration is output to.
Master ID The Master ID is the numeric identity of this component. It must be unique amongst all the components for the flight software to function properly. To aid in determining which MasterID's are already taken, use the Configuration Overview.
Priority The priority is what handles the order of execution in the subsystem. Lower numbers execute first. A list of all the priorities of existing components is available in the Configuration Overview.
CmdTlm Prefix This is the prefix that goes in front of the command and telemetry mnemonics to make them unique from other instances of the same type of component.
Long Name This is the Long Name prefix for the telemetry. This is what becomes the Packet Name in the Telemetry Management Page page.
Group Name This is the Group that this telemetry belongs to, which is purely for organizational purposes in the Telemetry Management Page page.
Connect

Setting up connections between components requires two things:

  • The component being configured has a pointer that can point to another object's implemented interface.
  • There is another component that has been instantiated that implements the specified interface.

For example, the component FSW_ActProc_RW_Reaction_Wheels_Set has a connection point Connection_HWR_ActMgr_RW, and the object HWR_ActMgr_RW implements that interface. The name of the accessor in that object that returns that pointer is HWR_ActMgr_RW. The UI has a complete index of all the pointers that each component has, as well as the objects and interfaces they can connect to, so the UI will present you with all the options that are available to you. If there is only one possibility, it will populate in automatically.

Connect Component

Parameter Description
Connection Name This is the name of the connection pointer in the component that is currently being configured.
Connected Component This is the name of the component that implements the interface of the type of the connection pointer selected.
Accessor This is the config name of the implementation of the interface.
Type There are two types, Parameter and Function. There are some legacy connections that use functions to make the connection. For all future development will use Parameter.
Comment This is the comment associated with this connection.
Configure There are two ways of setting parameters in your component. The first is with a configuration parameter. The other is with configuration functions that can take two or more parameters per function call.

Configuration parameter

Configuration parameters are able to set all the basic types: Enum, Boolean, Double, Filter, Integer, Matrix, Vector, Quaternion, and String. The Configuration Manager page keeps knowledge of the configuration type of each parameter, so the value editor presented will display the correct type for configuration.

Parameter

ParameterDescription
SectionThis is the section that this configuration parameter will be set in. Sections are useful if something has an interdependency that requires one item to be set before another. In this case, specifying a higher section number for an item will set it later. In general, the section defaults to zero.
Use ConnectionThis item lets you pull a value that is configured somewhere else. So, if you need two components to match, configuring the other component with a value in the typical way and then configuring this component to point to that component will make that happen.

Since the order within sections is not guaranteed, it is important that the component with the direct value configuration is set to a lower number section so that it is configured first.
Parameter NameIdentifies the parameter being configured.
ValueSpecifies the value that the parameter is being set to. If the Use Connection check box is selected, then the upper dropdown menu selection is the component and the lower dropdown menu selection is the accessor. If it is an indexed accessor, the index will become visible and enabled.

Configuration functions

Typically, parameters that you can set two or more times are implement with a configuration function. For example, add a reaction wheel via function to the mixing component, since the reaction wheel mixing is set up to work with any number of reaction wheels. Also, just like the Parameter Dialog, each argument that you click will present the correct editor to edit the value.

If you are configuring a component with a function that you created, then a function has been created in the *.cpp file associated with your component. That function will be invoked with the arguments you give it. Additionally, a configuration function will configure a container, but all of the data management is taken care of for you.

Make sure to use the section selection to enforce order of configuration so that if there are dependencies on other parameters for their configuration, they are guaranteed to be properly initialized before the function is invoked.

Function

ParameterDescription
SectionThis is the section that this function is invoked in. Similar to the parameter settings above, section numbers are useful to ensure the order of the parameters being set. However, there is no enforcement of the order in which parameters are configured within a specific section.
Function NameSpecifies the name of the function being invoked.
ArgumentsThis is a list of the arguments in the function.
TypeThis is a read only display of the type of the selected argument.
Use ConnectionNot pictured, this enables you to set the argument value based on a previously configured parameter. Make sure that the parameter used has been configured in a lower numbered section.
ValueSpecify the value of the selected argument. Like above, if the Use Connection check box is selected, then the upper dropdown menu selection is the component and the lower dropdown menu selection is the accessor. If it is an indexed accessor, the index will become visible and enabled.